#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"




main(int argc, char **argv)
{
	int np, rank;
	MPI_Status status;
	
	MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	MPI_Comm_size(MPI_COMM_WORLD, &np);

	
	unsigned int iseed = (unsigned int)time(NULL);
	int *liczba;
	int *liczba_result;
	int *recvBuffer;
	liczba = (int *)malloc(sizeof(*liczba)*np);
	liczba_result = (int *)malloc(sizeof(*liczba)*4);
	recvBuffer = (int *)malloc(sizeof(*liczba)*np*4);
	
	srand (rank + iseed);
	 
	if(rank==0) {
		int i;
		for(i=0; i<np; i++) {
			
			liczba[i] = rand()/10000;
			
		}
		
		
	}
	
	int divliczba;
	
	MPI_Scatter(liczba, 1, MPI_INT, &divliczba, 1, MPI_INT, 0,MPI_COMM_WORLD);
	
	//printf("Proces %d, otrzymana liczba: %d \n", rank, divliczba);
	
	srand(divliczba);
	int j;
			for(j=0; j<np; j++) {
				
				liczba_result[j] = rand()/10000;
				
			}
	
	MPI_Gather(liczba_result, 4, MPI_INT,  recvBuffer, 4, MPI_INT, 0, MPI_COMM_WORLD);

	if(rank==0) {
		int i;
				for(i=0; i<(np*4); i++) {
					
					printf("Otrzymana liczba(%d): %d \n", i,recvBuffer[i]);
					
				}
		
		
	}
	
	
	MPI_Finalize();
}